﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Coolite.Ext.Web;
using ENT.PM.Core.Core;
using ENT.PM.Core;
using ent_pm.Code;


namespace ent_pm.Administracion
{
    public partial class Catalogos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                sCodigos.DataSource = CodigoCatalogos.GetCodigoCatalogos();
                sCodigos.DataBind();
            }
        }
        protected void Editar_Codigo(object sender, AjaxEventArgs e)
        {
            try
            {
                int idCatalogo;
                int.TryParse(e.ExtraParams["Id"], out idCatalogo);
                hidCodigoCatalodo.Text = e.ExtraParams["Id"];
                string opcion = e.ExtraParams["Comando"];
                switch (opcion)
                {
                    case "Eliminar":
                        Ext.Msg.Confirm("Aviso","Esta seguro de eliminar el item",
                            new MessageBox.ButtonsConfig
                            { 
                                Yes = new MessageBox.ButtonConfig
                                {
                                    Handler = "CatalogoAjax.EliminarCatalogo();",
                                    Text = "Si"
                                },
                                No = new MessageBox.ButtonConfig
                                {
                                    Text = "No"
                                }
                            }).Show();
                        
                        break;
                    case "Editar":
                        var catalogo = Catalogo.Get(idCatalogo);
                        cbxCodigoCatalogo.SetValue(catalogo.Codigo);
                        txtNombre.Text=catalogo.Nombre;
                        txtDescripcion.Text = catalogo.Descripcion;
                        int idCatalogoPapa;
                        int.TryParse(catalogo.IdCatalogoPadre.ToString(), out idCatalogoPapa);
                        if (idCatalogoPapa > 0)
                        {
                            var catalogoPadre = Catalogo.Get(idCatalogoPapa);
                            cbxCodigoCatalogoPadre.Enabled = true;
                            cbxCodigoCatalogoPadre.SetValue(catalogoPadre.Codigo);
                            sItemCatalogoPadre.DataSource = ListaCatalogos.GetListaCatalogos(catalogoPadre.Codigo);
                            sItemCatalogoPadre.DataBind();
                            cbxItemCatalogoPadre.SetValue(catalogoPadre.Id);
                            radNo.SetValue(false);
                            radSi.SetValue(true);
                        }
                        else
                        {
                            radNo.SetValue(true);
                            radSi.SetValue(false);
                        }
                        nfNumHabUrbano.Number = Convert.ToDouble( catalogo.HabitantesUrbano);
                        nfNumHabRural.Number = Convert.ToDouble(catalogo.HabitantesRural);
                        wItemCatalogo.Show();
                        break;
                    default:
                        nfNumHabUrbano.Number = 0;
                        nfNumHabRural.Number = 0;
                        break;
                }
                
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }
        }
        [AjaxMethod]
        public void EliminarCatalogo()
        {
            try
            {
                int idCatalogo;
                int.TryParse(hidCodigoCatalodo.Text, out idCatalogo);
                var catalogo = Catalogo.Get(idCatalogo);
                catalogo.Delete();
                catalogo.Save();
                UtilP.MostrarNotificacion("El elemento se elimino correctamente", "Aviso", MessageBox.Icon.INFO);
                gdpCatalogos.DeleteSelected();
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.ToString());
                UtilP.MostrarNotificacion("El elemento no se elimino", "Aviso", MessageBox.Icon.ERROR);
            }
            
        }
        protected void btnGuardar_Click(object sender, AjaxEventArgs e)
        {
            try
            {
                var catalogo = Catalogo.New();
                int idCatalogoPadre,id;
                int.TryParse(hidCodigoCatalodo.Text, out id);
                if (id>0)
                {
                    catalogo = Catalogo.Get(id);
                }
                
                catalogo.Codigo = cbxCodigoCatalogo.SelectedItem.Value;
                catalogo.Nombre = txtNombre.Text;
                catalogo.Descripcion = txtDescripcion.Text;
                catalogo.HabitantesUrbano =Convert.ToInt32( nfNumHabUrbano.Number);
                catalogo.HabitantesRural = Convert.ToInt32(nfNumHabRural.Number);
                if (radSi.Checked)
                {
                    int.TryParse(cbxItemCatalogoPadre.SelectedItem.Value,out idCatalogoPadre);
                    catalogo.IdCatalogoPadre = idCatalogoPadre;
                }
                catalogo = catalogo.Save();
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex.ToString());
            }
        }
        protected void ListarItems_Click(object sender, AjaxEventArgs e)
        {
            sListaCatalogos.DataSource = ListaCatalogos.GetListaCatalogos(cbxCodigo.SelectedItem.Text);
            sListaCatalogos.DataBind();
        }
        protected void cbxCodigoCatalogoPadre_Select(object sender, AjaxEventArgs e)
        {
            try
            {
                sItemCatalogoPadre.DataSource = ListaCatalogos.GetListaCatalogos(cbxCodigoCatalogoPadre.SelectedItem.Value);
                sItemCatalogoPadre.DataBind();
            }
            catch (Exception ex)
            {
                Util.RegistarLog(ex.ToString());
            }
        }
    }
}
